package com.mercurio_wayra;

import android.R.color;
import android.os.Bundle;
import android.app.Activity;
import android.app.SearchManager;
import android.view.Menu;
import android.view.MenuItem;
import android.view.WindowManager;

import java.util.ArrayList;
import java.util.HashMap;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.AsyncTask;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.SearchView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
 
 
public class Inicio extends Activity {
    ListView list;
    TextView producto,nro_pendientes;
    TextView remitente;
    TextView direccion;
    TextView cod_barra;
    TextView destinatario;
    TextView cp;
    TextView servicio;
    
    Button Btnbsq;
    Button btnIs;
    TextView titulo;
    RelativeLayout relative1;
    ArrayList<HashMap<String, String>> oslist = new ArrayList<HashMap<String, String>>();
 
    //URL to get JSON Array
    private static String url = "http://192.168.0.67/services/select.php";
 
    //JSON Node Names 
    private static final String TAG_PADRE = "Datos";
    private static final String TAG_PRODUCTO = "PRODUCTO";
    private static final String TAG_REMITENTE = "REMITENTE";
    private static final String TAG_DIRECCION = "DIRECCION";
    private static final String TAG_DESTINATARIO = "DESTINATARIO";
    private static final String TAG_CP = "CP";
    private static final String TAG_SERVICIO = "SERVICIO";
    private static final String TAG_COD_BARRA = "COD_BARRA";
    String cod;
 
    JSONArray Datos = null;
	private MenuItem refreshMenuItem;
	private MenuItem uploadMenuItem;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
        list=(ListView)findViewById(R.id.list);
        setContentView(R.layout.inicio);
        oslist = new ArrayList<HashMap<String, String>>();
        relative1=(RelativeLayout)findViewById(R.id.relative1);
        oslist.clear();//limpia la lista antes de ejecutarla de nuevo
        new JSONParse().execute();
       
        setTitleColor(color.holo_orange_dark);
     
 
    }
 


   



	private class JSONParse extends AsyncTask<String, String, JSONObject> {
         private ProgressDialog pDialog;
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            nro_pendientes = (TextView)findViewById(R.id.nro_pendientes);
            producto = (TextView)findViewById(R.id.producto);
            remitente = (TextView)findViewById(R.id.remitente);
            direccion = (TextView)findViewById(R.id.direccion);
            destinatario = (TextView)findViewById(R.id.destinatario);
            cod_barra = (TextView)findViewById(R.id.cod_barra);
            cp = (TextView)findViewById(R.id.cp);
            servicio = (TextView)findViewById(R.id.servicio);
            pDialog = new ProgressDialog(Inicio.this);
            pDialog.setMessage("Obteniendo Datos ...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(false);
            pDialog.show();
 
        }
 
        @Override
        protected JSONObject doInBackground(String... args) {
 
            JSONParser jParser = new JSONParser();
 
            // Getting JSON from URL
            JSONObject json = jParser.getJSONFromUrl(url);
            return json;
        }
         @Override
         protected void onPostExecute(JSONObject json) {
             pDialog.dismiss();
             try {
                    // Getting JSON Array from URL
            	 if(json!=null){// si le trae vacio manda un toast
            	 Datos = json.getJSONArray(TAG_PADRE);
            	 int cant =Datos.length();
            	 nro_pendientes.setText("Nro Pendientes: "+cant);
            	 nro_pendientes.setVisibility(View.VISIBLE);
                    for(int i = 0; i < cant; i++){
                    JSONObject c = Datos.getJSONObject(i);
 
                    // Storing  JSON item in a Variable
                    String cod_barra= c.getString(TAG_COD_BARRA);
                    String producto = c.getString(TAG_PRODUCTO);
                    String remitente= c.getString(TAG_REMITENTE);
                    String direccion= c.getString(TAG_DIRECCION);
                    if(direccion=="null"){
                    	direccion="No Existe Direccion en el Servidor";
                    }
                    String destinatario= c.getString(TAG_DESTINATARIO);
                    String cp= c.getString(TAG_CP);
                    String servicio= c.getString(TAG_SERVICIO);
 
                    // Adding value HashMap key => value
 
                    Sqlite(TAG_COD_BARRA,TAG_PRODUCTO,TAG_REMITENTE,TAG_DIRECCION,TAG_DESTINATARIO,TAG_CP,TAG_SERVICIO);
                    HashMap<String, String> map = new HashMap<String, String>();
                    
                    map.put(TAG_COD_BARRA,cod_barra);
                    map.put(TAG_PRODUCTO,producto);
                    map.put(TAG_REMITENTE,remitente);
                    map.put(TAG_DIRECCION, direccion);
                    map.put(TAG_DESTINATARIO, destinatario);
                    map.put(TAG_CP, cp);
                    map.put(TAG_SERVICIO, servicio);
                    
                    oslist.add(map);
                    list=(ListView)findViewById(R.id.list);
                    ListAdapter adapter = new SimpleAdapter(Inicio.this, oslist,
                            R.layout.elementos_lista,
                            new String[] { TAG_COD_BARRA,TAG_PRODUCTO,TAG_REMITENTE, TAG_DIRECCION,TAG_DESTINATARIO,TAG_CP,TAG_SERVICIO }, new int[] {
                                    R.id.cod_barra,R.id.producto,R.id.remitente,R.id.direccion,R.id.destinatario,R.id.cp,R.id.servicio});
                    
                    
                    list.setAdapter(adapter);
                    //list.refreshDrawableState();
                    
                    list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    	

                    	@Override
            			public void onItemClick(AdapterView<?> parent, View view,
            					int position, long id) {
            				// getting values from selected ListItem
                    		String producto = ((TextView) view.findViewById(R.id.producto)).getText().toString();
                    		String remitente = ((TextView) view.findViewById(R.id.remitente)).getText().toString();
                    		String direccion = ((TextView) view.findViewById(R.id.direccion)).getText().toString();
                    		String destinatario = ((TextView) view.findViewById(R.id.destinatario)).getText().toString();
                    		String cp = ((TextView) view.findViewById(R.id.cp)).getText().toString();
                    		String servicio = ((TextView) view.findViewById(R.id.servicio)).getText().toString();
                    		String cod_barra = ((TextView) view.findViewById(R.id.cod_barra)).getText().toString();
                    		
            				// Starting new intent
                    		Intent i = new Intent(Inicio.this,Datos.class);//Creamos un nuevo intent para llamar a la siguiente actividad
                            i.putExtra("producto", producto);//Guardamos el la cadena en el intent y le ponemos de nombre resultado
                            i.putExtra("remitente", remitente);
                            i.putExtra("cod_barra", cod_barra);
                            i.putExtra("direccion", direccion);
                            i.putExtra("destinatario", destinatario);
                            i.putExtra("codigo_pos", cp);
                            i.putExtra("tipo_service", servicio);
                            startActivity(i);//Ejecutamos la actividad para que muestre la segunda actividad

            			}
                    });
 
                    }
             }else{Toast.makeText(Inicio.this, "No se recuperaron datos con dicha busqueda", Toast.LENGTH_LONG).show();}
            } catch (JSONException e) {
                e.printStackTrace();
            }
             
         }

		private void Sqlite(String tagCodBarra, String tagProducto,
				String tagRemitente, String tagDireccion,
				String tagDestinatario, String tagCp, String tagServicio) {


		 
				//Abrimos la base de datos 'DBUsuarios' en modo escritura
			    UsuariosSQLiteHelper usdbh =
			        new UsuariosSQLiteHelper(Inicio.this, "DBUsuarios", null, 1);

			    SQLiteDatabase db = usdbh.getWritableDatabase();

			    //Si hemos abierto correctamente la base de datos
			    if(db != null)
			    {
			          
			            

			            //Insertamos los datos en la tabla Usuarios
			            db.execSQL("INSERT INTO Usuarios (codigo, nombre) " +
			                       "VALUES (tagCodBarra, tagRemitente, tagDireccion, tagDestinatario, ,)");
			       

			        //Cerramos la base de datos
			        db.close();
			    }
		    }
		    


			
		}
    
	
	
	
	
	
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.inicio, menu);
		SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
		SearchView searchView = (SearchView) menu.findItem(R.id.buscar)
				.getActionView();
		searchView.setSearchableInfo(searchManager
				.getSearchableInfo(getComponentName()));
		return true;
	}
	
	
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Take appropriate action for each action item click
		switch (item.getItemId()) {
		case R.id.action_refresh:
			// refresh
			refreshMenuItem = item;
			// load the data from server
			new SyncData().execute();
			return true;
		case R.id.action_Subir:
			// refresh
			uploadMenuItem = item;
			// load the data from server
			new UploadData().execute();
			return true;
		default:
			return super.onOptionsItemSelected(item);
		}
	}
	
	
	private class SyncData extends AsyncTask<String, Void, String> {
		@Override
		protected void onPreExecute() {
			// set the progress bar view
			refreshMenuItem.setActionView(R.layout.action_progressbar);

			refreshMenuItem.expandActionView();
		}

		@Override
		protected String doInBackground(String... params) {
			// not making real request in this demo
			// for now we use a timer to wait for sometime
			try {
				Thread.sleep(3000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			return null;
		}

		@Override
		protected void onPostExecute(String result) {
			refreshMenuItem.collapseActionView();
			// remove the progress bar view
			refreshMenuItem.setActionView(null);
		}
	};
	
	
	private class UploadData extends AsyncTask<String, Void, String> {
		@Override
		protected void onPreExecute() {
			// set the progress bar view
			uploadMenuItem.setActionView(R.layout.action_progressbar);

			uploadMenuItem.expandActionView();
		}

		@Override
		protected String doInBackground(String... params) {
			// not making real request in this demo
			// for now we use a timer to wait for sometime
			try {
				Thread.sleep(3000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			return null;
		}

		@Override
		protected void onPostExecute(String result) {
			uploadMenuItem.collapseActionView();
			// remove the progress bar view
			uploadMenuItem.setActionView(null);
		}
	};
 
}